<?php

FLEA::loadClass('FLEA_Controller_Action');

class Controller_Admin_tools extends FLEA_Controller_Action
{

	function Controller_Admin_tools()
	{
			
	}
	
	/**
	 * 工具首页
	 */
	function actionIndex()
	{
		//组织数据
		$viewdata = array(
			// title标签
			'title' => '工具',
			// 当前菜单标签
			'menu_tools' => 'id="current"',
	    );
	    
		$this->_executeView('admin/Websetup_tools.html', $viewdata);
	}
	
	/**
	 * 重新创建ACT表
	 */
	function actionmakeAct(){
		$acl =& FLEA::getSingleton('Model_AclManager');
		/*@var $acl Model_AclManager*/

		$acl->rewriteACT();
		js_alert('ACT权限表已经重写','',$this->_url());
	}
	
	
	/**
	 * 显示代码模板列表
	 */
	function actionAutocoderList(){
		// 组织数据
		$viewdata = array(
			// 模板文件
			'tempfilelist' => require(APPDIR . '/CodeTemp/AutoCode.cfg.php'),
			// title标签
			'title' => '代码模板 > 模板列表',
			// 当前菜单标签
			'menu_tools' => 'id="current"',
	    );
	    
		$this->_executeView('admin/Websetup_autocoder_list.html', $viewdata);
	}
	
	/**
	 * 显示自动生成的模板填写表单
	 */
	function actionAutoCoder(){
		
		$tempfilename = $_GET['tempfilename'];
		
		$md_AutoCoder = FLEA::getSingleton('Model_AutoCoder');
		/*@var $md_AutoCoder Model_AutoCoder*/
		// 分析出模板中的标签
		$codetemp = $md_AutoCoder->AnalyzeCodeTemp($tempfilename);
		if(!$codetemp){
			js_alert('模板文件不存在或不能读取！','',$this->_url('autocoderlist'));
		}
		
		// 组织数据
		$viewdata = array(
			// 模板文件
			'tempfilename' => $tempfilename,
			// 标签数组
			'labels' => $codetemp['labels'],
			// title标签
			'title' => '代码模板 > ' . $codetemp['title'][1],
			// 当前菜单标签
			'menu_tools' => 'id="current"',
	    );
	    
		$this->_executeView('admin/Websetup_autocoder.html', $viewdata);
	}
	
	/**
	 * ajax: 处理提交上来的代码生成表单，给模板赋值后生成文件
	 */
	function actionMakeFile(){
		
		if($this->_isAjax()){
			$md_AutoCoder = FLEA::getSingleton('Model_AutoCoder');
			/*@var $md_AutoCoder Model_AutoCoder*/
			
			// 给模板变量赋值并完成模板变量的替换
			$temp = $md_AutoCoder->MakeFile($_POST);
			echo $temp;
			
		}else{
			redirect($this->_url('index'));
		}

	}
	
	
	/**
	 * 简便的数据字典，可以填写备注
	 * 改用FLEA_Db_Driver_Mysql完成了功能，但是这样似乎也是Mysql Only吧
	 */
	function actionDataDict(){
		
		$tbs =& FLEA::getSingleton('FLEA_Db_Driver_Mysql');
		/*@var $tbs FLEA_Db_Driver_Mysql*/
		
		$tbs->connect(FLEA::getAppInf('dbDSN'));
		$result = $tbs->metaTables();
		
		// 获取表名
		foreach ($result as $value) {
			$tables[]['table_name'] = $value;
		}
		
	    // 读取数据字典说明文件
	    $remark = FLEA::loadFile('Config/DDremark.php');
	    
	    // 获取字段名，字段类型
	    foreach ($tables as $key=>$value) {
	    	//$tables[$table_name] = array('table_name'=>$table_name);
	    	$metaColumns = $tbs->metaColumns($value['table_name']);
	    		
	    		$i = 0;
	    		foreach ($metaColumns as $colum) {
	    			$remarkkey = $value['table_name'].'_'.$colum['name'];
	    			$tables[$key]['fields'][$i] = array(
	    				'name' => $colum['name'],
	    				'type' => $colum['type'],
	    				'null' => $colum['notNull'],
	    				'PRI' => ($colum['primaryKey']==1)?'YES':'',
	    				'default' => isset($colum['defaultValue'])?$colum['defaultValue']:'',
	    				'remark' => isset($remark[$remarkkey])?$remark[$remarkkey]:'',
	    			);
	    			$i++;
	    		}
	    			    		
	    }
	    
	    //组织数据
		$viewdata = array(
			'title' => '数据字典',
			'tables' => $tables,
	    );
	    if(isset($_GET['printview'])){
	    	$this->_executeView('admin/Websetup_datadict_printview.html', $viewdata);		
	    }else{
			$this->_executeView('admin/Websetup_datadict.html', $viewdata);		
	    }
	}
	
	/**
	 * ajax:保存数据字典的备注信息
	 */
	function actionSaveRemark(){
		if($this->_isAjax()){
			$DDremark = '<?php return ' . var_export($_POST,true) . '?>';
			file_put_contents(APPDIR.'/Config/DDremark.php', $DDremark);
			echo true;
		}
	}
	
	/**
	 * 方便打印的数据字典
	 */
	function actionDataDictPrintview(){
		redirect($this->_url('DataDict',array('printview'=>1)));
	}
	
}

?>